package com.falidos.utilidades;

import java.util.Enumeration;
import java.util.HashMap;

import javax.servlet.http.HttpServletRequest;

import com.falidos.modelo.artefatos.Artefato;
import com.falidos.modelo.artefatos.Livro;
import com.falidos.modelo.artefatos.Usuario;

public class Utilidades {	
	
	public static Artefato buscarDadosTela(Artefato artefato, HashMap<String, Object> dados){
		if(artefato.getClass().getSimpleName().equals("Usuario")){
			Usuario usuario = (Usuario) artefato;
			usuario.setId( dados.get("id")!=null ? Integer.parseInt((String) dados.get("id")) : 0 );
			usuario.setUsuario((String) dados.get("usuario"));
			usuario.setEndereco((String) dados.get("endereco"));
			usuario.setTelFixo((String) dados.get("tel1"));
			usuario.setTelCel((String) dados.get("tel2"));
			usuario.setSenha((String) dados.get("senha"));
			usuario.setCategoria((String) dados.get("categoria"));
			artefato = usuario;
		}
		else if(artefato.getClass().getSimpleName().equals("Livro")){
			Livro livro = (Livro) artefato;
			livro.setId( dados.get("id")!=null ? Integer.parseInt((String) dados.get("id")) : 0 ); //operador ternario-> condicao ? se verdadeiro: se falso// se o Id nao for null ele 
			livro.setTitulo((String) dados.get("tit"));
			livro.setAutores((String) dados.get("autor"));
			livro.setIsbn((String) dados.get("isbn"));
			livro.setPreco(dados.get("preco") == null ? 0:Double.parseDouble((String) dados.get("preco")));
			livro.setPalavraChave((String) dados.get("palavrachave"));
			livro.setCategoria((String) dados.get("categoria"));
			artefato = livro;
		}
		return artefato;		
	}
	
	@SuppressWarnings("rawtypes")
	public Artefato preparaArtefato(HashMap<String, Object> dados){
		String nomeArtefato = "com.falidos.modelo.artefatos.";
		nomeArtefato +=	dados.get("botSubmit");
		try {
			Class classe = Class.forName(nomeArtefato);
			Artefato artefato = (Artefato) classe.newInstance();
			artefato = Utilidades.buscarDadosTela(artefato, dados);
			return artefato;
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	@SuppressWarnings("rawtypes")
	public HashMap preparaDados(HttpServletRequest request){		
		Enumeration e = request.getParameterNames();		
		HashMap<String, Object> dados = new HashMap<String, Object>();
		while(e.hasMoreElements()){
			String param = (String) e.nextElement();
			dados.put(param, request.getParameter(param));				
		}			
		return dados;
	}
}